package com.zohnblog.dao;

import com.zohnblog.model.domain.IPBanMode;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface IPBanModeMapper {
    // 获取开启的ip封禁模式
    @Select("SELECT * FROM t_ip_ban_mode WHERE open_ban = true")
    public List<IPBanMode> getOpenMode();

    // 根据id获取ip封禁模式
    @Select("SELECT * FROM t_ip_ban_mode WHERE id = #{Id}")
    public IPBanMode getModeById(Integer Id);

    // 获取所有ip封禁模式
    @Select("SELECT * FROM t_ip_ban_mode ORDER BY id AND open_ban DESC")
    public List<IPBanMode> getAllMode();

    // 修改一个ip封禁模式
    @Update("UPDATE t_ip_ban_mode SET mode_name = #{modeName}, times = #{times}, max_requests = #{maxRequests} WHERE id = #{id}")
    public Integer updateMode(IPBanMode ipBanMode);

    // 删除一个ip封禁模式
    @Delete("DELETE FROM t_ip_ban_mode WHERE id = #{id}")
    public Integer deleteMode(Integer id);

    // 判断一个ip封禁模式是否开启
    @Select("SELECT open_ban FROM t_ip_ban_mode WHERE id = #{id}")
    public Boolean isOpenMode(Integer id);

    // 开启一个ip封禁模式
    @Update("UPDATE t_ip_ban_mode SET open_ban = true WHERE id = #{id}")
    public Integer openMode(Integer id);

    // 关闭所有ip封禁模式
    @Update("UPDATE t_ip_ban_mode SET open_ban = false WHERE id = #{id}")
    public Integer closeMode(Integer id);

    // 关闭所有ip封禁模式
    @Update("UPDATE t_ip_ban_mode SET open_ban = false WHERE open_ban = true")
    public Integer closeAllMode();

    // 创建ip封禁模式，同时使用@Options注解获取自动生成的主键id
    @Insert("INSERT INTO t_ip_ban_mode(mode_name,times,max_requests)" +
            "VALUES (#{modeName},#{times},#{maxRequests})")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    public Integer createMode(IPBanMode ipBanMode);
}
